//// 输入/输出流操作符函数
//#include <iostream>
//using namespace std;
//
//class Human {
//public:
//    Human(int age = 0, const char* name = "匿名") :m_age(age), m_name(name) {
//        // [int m_age = age;]
//        // [string m_name(name);]
//    }
//    /*  void getInfo(){
//            cout << "姓名:" << m_name << ", 年龄:" << m_age << endl;
//        }*/
//        // 成员形式操作符函数
//private:
//    int m_age;
//    string m_name;
//    friend ostream& operator<<(ostream& os, const Human& that);
//    friend istream& operator>>(istream& is, Human& that);
//};
//// 全局形式操作符函数
//ostream& operator<<(ostream& os, const Human& that) {
//    os << "姓名：" << that.m_name << ", 年龄：" << that.m_age;
//    return os;
//}
//
//istream& operator>>(istream& is, Human& that) {
//    is >> that.m_name >> that.m_age;
//    return is;
//}
//
//// 模拟类的设计者(类库\别人设计的类\自己设计的类)
//// -----------------------------
//// 模拟用户(使用类的人)
//
//int main(void) {
//    Human a(22, "张飞");  // 非常左值
//    const Human b(20, "赵云");  // 常左值
//
//    cout << a << endl; // cout.operator<<(a) 或 operator<<(cout,a)
//    cout << b << endl; // cout.operator<<(b) 或 operator<<(cout,b)
//    cout << Human(45, "黄忠") << endl; // cout.operator<<(Human(45,"黄忠")) 或 operator<<(cout,Human(45,"黄忠"))
//
//    cin >> a; // cin.operator>>(a) 或 operator>>(cin,a)
//    cout << a << endl;
//
//    /*
//      int a = 3, b = 5;         // 非常左值
//      const int c = 7, d = 9;   // 常左值
//
//      cout << a;
//      cout << c;
//      cout << 5;
//    */
//    return 0;
//}
